public class PrimeNumberJudgement {
    public static void main(String[] args) {
        int max = 20000;

        // 2是唯一的偶素数，单独处理
        int count = 1; // 素数的计数
        System.out.print(2 + "\t");

        // 只判断奇数，可减少一半计算
        for (int i = 3; i <= max; i += 2) {
            if (isPrime(i)) {
                // 用制表符分隔
                System.out.print(i + "\t");
                count++;
                // 每5个素数换一行
                if (count % 5 == 0) {
                    System.out.println();
                }
            }
        }
    }

    private static boolean isPrime(int n) {
        // 小于一则默认非素数
        if (n <= 1)
            return false;
        // 特殊处理：2是素数
        if (n == 2)
            return true;
        // 排除偶数：偶数均非素数
        if (n % 2 == 0)
            return false;
        // 只检查奇数除数，直到n的平方根
        for (int i = 3; i * i <= n; i += 2) {
            if (n % i == 0) {
                return false;
            }
        }
        return true;
    }
}
